<?php
	//图片上传函数
	function Upload($name='myfile',$save_dir='./uploads',$allow_suffix=['jpg','jpeg','png','gif'])
	{
		//判断图片是否上传成功
		if ($_FILES[$name]['error']>0) 
		{
			return false;
		}
		//拼接保存路径
		$save_dir=trim($save_dir,'/').'/';
		$save_dir.=date('Y',time()).'/';
		$save_dir.=date('m',time()).'/';
		$save_dir.=date('d',time()).'/';
		//判断上传目录是否有，没有创建
		if (!file_exists($save_dir)) 
		{
			mkdir($save_dir,0777,true);
		}
		//获取后缀
		$suffix=trim(strrchr($_FILES[$name]['name'], '.'),'.');
		//判断上传的图片（后缀名）是否合法
		if (!in_array($suffix, $allow_suffix)) return false;
		//拼接新的文件名
		$newfilename=date('Ymd',time()).uniqid().md5(mt_rand(0,99999)).'.'.$suffix;
		//拼接完整路径
		$filepath=$save_dir.$newfilename;
		//判断文件是否通过表单上传
		if (!is_uploaded_file($_FILES[$name]['tmp_name'])) return false;
		//开始移动
		if (!move_uploaded_file($_FILES[$name]['tmp_name'], $filepath)) return false;
		//否则返回上传的文件名
		zip($filepath,50,50,dirname($filepath));
		zip($filepath,80,80,dirname($filepath));
		zip($filepath,200,200,dirname($filepath));
		zip($filepath,300,300,dirname($filepath));
		zip($filepath,400,400,dirname($filepath));
		zip($filepath,500,500,dirname($filepath));
		return $newfilename;
	}

	//图片压缩函数
	function zip($img='',$width=200,$height=200,$save_dir='')
	{
		//判断压缩的图片是否存在
		if (!file_exists($img)) 
		{
			echo "图片不存在";
			return false;
		}
		//获取图片大小
		$img_info=getimagesize($img);
		//原图的宽
		$src_w=$img_info[0];
		//原图的高
		$src_h=$img_info[1];
		//计算原图与画布的比例
		if ($src_w>$src_h) 
		{
			//图是横着
			$height=($width/$src_w)*$src_h;
			$pre=$width.'_';
		}else{
			//图是竖着
			$width=($height/$src_h)*$src_w;
			$pre=$height.'_';
		}
		//获取原图的格式
		$suffix=trim(strrchr($img, '.'),'.');
		if ($suffix=='jpg') 
		{
			$suffix='jpeg';
		}
		//拼接函数  imagecreatefrom()
		$func_img='imagecreatefrom'.$suffix;
		//获取原图
		$src=$func_img($img);
		//创建新画布
		$dst=imagecreatetruecolor($width, $height);
		//将图片贴进画布
		imagecopyresampled($dst, $src, 0, 0, 0, 0, $width, $height, $src_w, $src_h);
		
		//获取原图的目录名称
		if ($save_dir=='') 
		{
			$save_dir=dirname($img);
		}
		//新图片的名字
		$newfilename=$pre.basename($img);
		//新图片的path
		$newfilepath=$save_dir.'/'.$newfilename;
		//拼接一个函数
		$func_name='image'.$suffix;
		//保存图片
		$func_name($dst,$newfilepath);
		//销毁
		imagedestroy($dst);
		imagedestroy($src);

		return $newfilename;
	}

	//model类
	class Model
	{
		public $tabName;	//表名
		public $pdo;		//用来存储pdo对象的
		//写一个构造方法，用来连接数据库
		public function __construct($tabName)
		{
			//将表名赋值给属性
			$this->tabName=$tabName;
			//实例化一个pdo对象
			$this->pdo=new PDO('mysql:dbname='.DB.';host='.HOST.';charset='.CHARSET,USER,PWD);
		}

		//增函数
		public function insert($data)
		{
			//判断$data
			if (!is_array($data)) return false;
			//获取键拼接
			$key=implode('`,`', array_keys($data));
			//获取键的个数
			$num=count(array_keys($data));
			//占位符
			$values=trim(str_repeat('?,',$num),',');

			//准备sql模板语句
			$sql="insert into $this->tabName(`$key`)values($values)";
			//执行模板语句
			$stmt=$this->pdo->prepare($sql);
			//绑定值
			$values=array_values($data);
			//返回true或false
			$list=$stmt->execute($values);
			//返回最后一次插入的id
			return $this->pdo->lastInsertId()?$this->pdo->lastInsertId():$list;
		}

		//删
		public function delete($id)
		{
			//判断id
			$str='';
			if (is_array($id)) 
			{
				$str=' id in('.implode(',', array_keys($id)).')';
			}else{
				$str='id='.$id;
			}

			$sql="delete from $this->tabName where $str";
			return $this->pdo->exec($sql);
		}

		//改
		public function update($data,$where=array())
		{
			//判断$data是否是一个数组
			if (!is_array($data)) return false;
			if (!is_array($where)) return false;
			$str='';
			//拼接要修改的数据
			if (!empty($data)) {
				foreach ($data as $key => $value) 
				{
					$str.="`$key`='$value',";
				}
				//去掉修改数据中的两边的,
				$str=trim($str,',');
				}
			//拼接条件
			$wstr='';
			if (!empty($where)) 
			{
				foreach ($where as $key => $value) 
				{
					$wstr.=" and `$key`='$value'";
				}
				$wstr='where '.trim($wstr,' and ');
			}

			$sql="update $this->tabName set $str $wstr";
			return $this->pdo->exec($sql);

		}

		//查
		public function select($where='',$limit='',$order='')
		{
			//select * from ` `;
			$wstr='';
			if (!empty($where)) 
			{
				foreach ($where as $key => $value) 
				{
					$wstr.=" and `$key`='$value'";
				}
				$wstr='where '.trim($wstr,' and ');
			}
			if (!empty($limit)) 
			{
				$limit=' limit '.$limit;
			}
			$ord='';
			if (!empty($order)) 
			{
				$ord.=' order by `'.key($order).'` '.array_values($order)[0];
			}

			$sql="select * from $this->tabName $wstr $ord $limit";

			$list=$this->pdo->query($sql)->fetchAll(2);
			return $list;
		}

		public function find($sql)
		{
			$list=$this->pdo->query($sql)->fetchAll(2);
			return $list;
		}
	}

	//跳转函数
	function error($message,$time=2,$url='')
	{
		if (empty($url)) 
		{
			$url=$_SERVER['HTTP_REFERER'];
		}
		echo "<div style='width:500px;height:300px;text-align:center;background:#ccc;margin:100px auto;border-radius:10px;line-height:200px;font:bold 40px/200px 楷体;color: #2CAF01;'>".$message.'</div>';
		echo '<meta http-equiv="refresh" content="'.$time.';'.$url.'">';
	}

	function success($message,$url,$time)
	{
		echo "<div style='width:400px;height:200px;text-align:center;background:#ccc;margin:100px auto;border-radius:10px;line-height:200px;font:bold 40px/200px 楷体;color: #2CAF01;'>".$message.'</div>';
		echo '<meta http-equiv="refresh" content="'.$time.';'.$url.'">';
	}
?>